package org.yscz.service;

import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import org.yscz.entity.Scale;
import org.yscz.entity.vo.*;

import java.util.List;
import java.util.Map;

/**
 * 量表业务层
 *
 * @author muqs
 * @create 2021-08-13 17:44
 */
public interface ScaleService extends IService<Scale> {

    /**
     * 新增量表
     *
     * @param scaleVo 量表信息
     * @return scale对象
     */
    Scale add(ScaleVo scaleVo);

    /**
     * 修改量表
     *
     * @param scaleVo 量表信息
     */
    void modify(ScaleVo scaleVo);

    /**
     * 删除量表
     *
     * @param scaleId 量表ID
     */
    void del(Long scaleId);

    /**
     * 获取量表列表
     *
     * @param queryWrapper 查询条件
     * @param page         分页
     */
    IPage<Scale> listPage(QueryWrapper queryWrapper, IPage<Scale> page);

    /**
     * 获取量表列表(自定义条件分页)
     *
     * @param condition 查询条件
     * @param page      分页
     */
    IPage<ScaleVo> listPageByCondition(IPage<Scale> page, Map condition);

    /**
     * 新增试题
     *
     * @param questionVoList 试题信息
     */
    void questionAdd(List<QuestionVo> questionVoList);

    /**
     * 修改试题
     *
     * @param questionVoList 试题信息
     */
    void questionModify(List<QuestionVo> questionVoList);

    /**
     * 根据量表ID查询试题
     *
     * @param scaleId 试题信息
     */
    List<QuestionVo> queryByScaleId(Long scaleId);

    /**
     * 根据量表ID查询详情
     *
     * @param scaleId 量表ID
     */
    ScaleVo queryScaleDetail(Long scaleId);

    /**
     * 根据行业ID获取量表列表 pe1.1版本
     *
     * @param projectId 行业id
     * @param condition 查询条件
     */
    List<ScaleVo> listPageByConditionByProject(Long projectId, Integer pageNum, Integer pageSize, Map condition);

    /**
     * 新增量表 pe1.1版本
     *
     * @param scaleScoreVo 量表规则信息
     * @return scale对象
     */
    JSONObject addScale(ScaleScoreVo scaleScoreVo);

    /**
     * 修改量表
     *
     * @param scaleScoreVo 量表信息
     */
    JSONObject updateScale(ScaleScoreVo scaleScoreVo);

    /**
     * 删除量表 pe1.1版本
     *
     * @param scaleId 量表ID
     */
    void delScale(Long scaleId);

    /**
     * 新增试题 pe1.1版本
     *
     * @param questionVoList 试题信息
     */
    void addQuestionAndFactor(List<QuestionVo> questionVoList);

    /**
     * 修改试题 pe1.1版本
     *
     * @param questionVoList 试题信息
     */
    void updateQuestionAndFactor(List<QuestionVo> questionVoList);

    /**
     * 根据量表ID查询详情 pe1.1版本
     *
     * @param scaleId 量表ID
     */
    ScaleScoreVo selectScaleDetail(Long scaleId);
}
